package com.supermap.gwfs.datashare.util;

import java.math.BigDecimal;

/**  
 * @Description: 数据格式转换工具类
 * @author zhoujian
 * @date 2017-6-13
 * @version V1.0 
 */
public class DataFormatUtil
{
	/**
	 * 
	 * @Description: float数据四舍五入
	 * @param n保留小数位数
	 * @return float
	 * @throws
	 */
	public static float formatFloat(float value , int n)
	{
		BigDecimal bd = new BigDecimal(value);  
        return bd.setScale(n, BigDecimal.ROUND_HALF_UP).floatValue();
	}
	/**
	 * 
	 * @Description: double四舍五入
	 * @return float
	 * @throws
	 */
	public static float formatFloat(double value , int n)
	{
		BigDecimal bd = new BigDecimal(value);  
        return bd.setScale(n, BigDecimal.ROUND_HALF_UP).floatValue();
	}
	
	/**
	 * 
	 * @Description: 一维数组转换成二维数组
	 * @return float[][]
	 * @throws
	 */
	public static float[][] arrayD1ToD2(float[] originValus , int rows , int cols)
	{
		float[][] result = new float[rows][cols];
		for (int row = 0; row < rows; row++)
		{
			for (int col = 0; col < cols; col++)
			{
				result[row][col] = originValus[row * cols + col];
			}
		}
		return result;
	}
	/**
	 * 
	 * @Description: 裁切数据
	 * @param originValues[] 原始数据 
	 * @param rows 裁切之后的行数
	 * @param cols 裁切之后的列数
	 * @param startX 裁切之后x轴(经度)起始下标
	 * @param startY 裁切之后Y轴(纬度)起始下标
	 * @param nxCols 原始数据的列数
	 * @return float[]
	 * @throws
	 */
	public static float[] getRangleData(float[] originValues, int rows, int cols, int startX, int startY, int nxCols)
	{
		float[] values = new float[rows * cols];
		for (int i = 0; i < rows; i++)
		{
			//原始数组	起始下标	目标数组	目标数组起始下标	目标数组长度
			System.arraycopy(originValues, i * nxCols + nxCols * startY + startX , values, i * cols, cols);
		}
		return values;
	}
	
	/**
	 * 
	 * @Description: 裁切数据
	 * @param originValues[][] 原始数据  
	 * @param rows 裁切之后的行数
	 * @param cols 裁切之后的列数
	 * @param startX 裁切之后x轴(经度)起始下标
	 * @param startY 裁切之后Y轴(纬度)起始下标
	 * @return float[][]
	 * @throws
	 */
	public static float[][] getRangleData(float[][] originValues, int rows, int cols, int startX, int startY)
	{
		float[][] values = new float[rows][cols];
		int row = 0;
		for (int i = startY; i < startY + rows; i++)
		{
			int col = 0;
			for (int j = startX; j < startX + cols; j++)
			{
				values[row][col++] = originValues[i][j];
				System.out.print(originValues[i][j] + " ");
			}
			row++;
//			System.out.println();
		}
		return values;
	}
}
